# FROM 指定基础镜像
FROM node:alpine

# LABEL 镜像标签
LABEL author="YanjinZhu" \
  email="yanjinzh6@gmail.com" \
  description="youzhe webapp"

# WORKDIR 指定工作目录
WORKDIR /home

COPY package.json package-lock.json /home/

# --no-cache: download package index on-the-fly, no need to cleanup afterwards
# --virtual: bundle packages, remove whole bundle at once, when done
RUN npm install

# COPY 剩余的文件, 这样只要不修改 package.json 层就不会触发上面的 RUN 层
COPY . /home

# VOLUME 指定镜像内的目录为数据卷
# EXPOSE 设置监听端口
EXPOSE 3000

# 指定 --restart always 选项, Docker 守护进程 (docker daemon) 会重启容器, 使用 HEALTHCHECK  指令可以让 Docker 周期性的检查容器的健康状况, 如果一切正常的话返回0, 否则返回1
# HEALTHCHECK CMD curl --fail http://localhost:$APP_PORT || exit 1

# CMD 指定容器运行时的默认参数
CMD ["npm", "run", "serve"]

# ENTRYPOINT [ "index.js" ]
# ENTRYPOINT ["node", "src/index"]